var express = require('express');
var router = express.Router();
var crypto = require("crypto");//加密模块
var mongo = require("./db")
var myToken = require("./myToken") //引入生成和验证token的插件
function User (user) {
  this.id = user.id;
  this.name = user.name;
  this.password = user.password;
  this.veri = user.veri;
};
/* GET users listing. */
router.get('/', function (req, res, next) {
  res.send('respond with a resource');
});
// 验证码接口
router.post("/veri", function (req, res) {

  if (req.body.action == "getVeri") {
    var str = "abcdefghigklmnopqrstuvwxyz1234567890"
    var code = ""
    for (var i = 0; i < 4; i++) {
      var index = Math.floor(Math.random() * str.length); //随机下标
      code += str[index]
    }
    // 将生成的验证码存储session

    var newUser = new User({
      name: "",
      password: "",
      id: "",
      veri: code
    });
    req.session.user = newUser;

    res.send({ success: "获取验证码成功", veri: code })
  } else if (req.body.action == "checkAction") {// 校验验证码接口
    // 前端发来的验证码和 session存储的验证码比较
    console.log(req.session)
    if (req.session.user && req.body.veri == req.session.user.veri) {

      res.send({ success: "验证码正确" })
    } else {
      res.send({ err: "验证码有误" })
    }
  }

})



// 注册接口

router.post("/reg", function (req, res) {
  // 需要前端传来  用户名 密码 手机号 权限  
  // 加密密码
  var password = crypto.createHash("md5").update(req.body.password).digest("base64");
  var power = req.body.powerCode == "0" ? "普通会员" : "白金会员"

  var obj = {
    phone: req.body.phone,
    username: req.body.username,
    password: password,
    powerCode: req.body.powerCode,//权限码  0或1
    power: power, // 权限名
    freeze: false,//是否冻结
    createAt: new Date().getTime()//创建日期
  }
  // 查找当前手机号是否在数据库中存在
  mongo("find", "userlist", { phone: req.body.phone }, function (data) {
    if (data.length == 0) { //没有找到当前手机号被注册的用户信息
      // 整理好 的数据 添加到数据库的用户表中
      mongo("insert", "userlist", obj, function (result) {
        res.send({ success: "添加成功" })
      })
    } else {
      res.send({ err: "当前手机号已注册，请前往登录" })
    }
  })

})
// 登录接口
router.post("/login", function (req, res) {
  // 加密前端传来的密码
  var password = crypto.createHash("md5").update(req.body.password).digest("base64");
  mongo("find", "userlist", { phone: req.body.phone }, function (data) {
    if (data.length != 0) {
      if (data[0].password == password) { //存在手机号 比对密码
        // 生成token
        var token = myToken.sign(req.body, "6h")
        // 把生成的token和成功提示 返回给前端
        res.send({ success: "登录成功", token: token })
      } else {
        res.send({ err: "密码错误" })
      }
    } else {
      res.send({ err: "该手机 未注册" })
    }
  })

})
// 购买接口
router.post("/buy", function (req, res) {

  // 购买之前  要判断是否登录  判断token
  myToken.verify(req.body.token, function (err, data) {
    console.log(data)
    if (data) {
      res.send({ success: "购买成功" })
    } else {
      res.send({ err: "请先登录 " })
    }
  })


})


module.exports = router;
